10 IFL=0THENL=1:LOAD"S.FNT",8,1 20 POKE52,128:POKE56,128:CLR:L=1 30 POKE56578,PEEK(56578)OR3:POKE56576,(PEEK(56576)AND252)OR1:POKE53272,16 40 POKE648,132:POKE53269,0:POKE53280,14:POKE53281,0:PRINT"[154][147]"; 50 DIML1,L2,I,J,B(35),S(35) 70 GOSUB6000 80 GOSUB950 90 FORI=0TO34:READB(I),S(I):NEXT 100 READL1,L2 105 PRINT"[159][\\\\\\\\\\][157][157][157][157][157][157][157][157][157][157][157][157]^[155]SCORE[159]....._ [159]"; 110 PRINT"[157][157][157][157][157][157][157][157][157][157][157][157][157]/::::::::::; [159]"; 112 PRINT"[157][157][157][157][157][157][157][157][157][157][157][157] [159]" 115 PRINT"[159][\\\\\\\\\\\\][\\\\\\\\\\\\]" 120 PRINT"^..[155]PROBLEM[159]..._ [159]^..[155]SOLUTION[159].._ [159]" 125 PRINT"[159][198]\\\\\\\\\\\\[199] [159][198]\\\\\\\\\\\\[199] [159]" 130 I=15:IFB(26)=10THENI=12 135 FORJ=1TOI:PRINT"^............_ [159]^............_ [159]":NEXT 140 PRINT"/::::::::::::; [159]/::::::::::::; [159]" 145 PRINT"  [159]"; 180 R=1:FORI=0TO34:GOSUB1010:NEXT 190 R=0:FORI=0TO34:GOSUB1010:NEXT 200 REM MAIN LOOP 205 M$=STR$(M):M$=MID$(M$,2,LEN(M$)-1):M$=RIGHT$("....."+M$,5) 209 PRINT"";M$; 210 IFQ=0THEN216 211 IFJJ=0THENREADJJ 212 A=JJ:JJ=INT(JJ/10):A=A-INT(JJ*10) 213 GETA$:IFA$<>CHR$(135)THEN225 214 GETA$:IFA$<>CHR$(133)THEN214 215 GOTO225 216 GETA$:IFA$=""THEN280 220 A=ASC(A$) 225 IF(A=145)OR(A=1)OR(A=85)THEN410 230 IF(A=17)OR(A=2)OR(A=68)THEN510 240 IF(A=29)OR(A=4)OR(A=82)THEN610 250 IF(A=157)OR(A=3)OR(A=76)THEN710 260 IF(A=136)OR(A=5)OR(A=83)THEN810 265 IFA=133THEN910 266 IFA=134THENPRINT"[154][147]";:GOSUB6400:GOTO80 270 GOTO210 280 A=PEEK(56320)AND31:IFA=31THEN210 290 A=31-A:IFAAND1THEN410 300 IFAAND2THEN510 310 IFAAND4THEN710 320 IFAAND8THEN610 330 IFAAND16THEN810 340 GOTO210 400 REM MOVE UP 410 ONB(L1-5)+1GOTO415,420,210,425,430,435,210,210,440,445,210 415 I=L1:L1=L2:L2=I:GOSUB1010:I=L1:GOSUB1010:GOTO210 420 B(L1)=1:B(L1-5)=0:I=L1:GOSUB1010:L1=L1-5:I=L1:GOTO2010 425 B(L1)=3:B(L1-5)=2:B(L1-10)=0:I=L1:GOSUB1010:I=L1-5:GOSUB1010:L1=L1-10 426 I=L1:GOTO2010 430 IFL2<>L1+1THEN210 431 B(L1)=B(L1-5):B(L2)=B(L2-5):B(L1-5)=0:B(L2-5)=0:I=L1:GOSUB1010:I=L2 432 GOSUB1010:L1=L1-5:L2=L2-5:I=L2:GOSUB1010:I=L1:GOTO2010 435 IFL2<>L1-1THEN210 436 GOTO431 440 IFL2<>L1+1THEN210 441 B(L1)=B(L1-5):B(L1-5)=B(L1-10):B(L1-10)=0:B(L2)=B(L2-5):B(L2-5)=B(L2-10) 442 B(L2-10)=0:I=L2:GOSUB1010:I=L2-5:GOSUB1010:L2=L2-10:I=L2:GOSUB1010 443 I=L1:GOSUB1010:I=L1-5:GOSUB1010:L1=L1-10:I=L1:GOTO2010 445 IFL2<>L1-1THEN210 446 GOTO441 500 REM MOVE DOWN 510 ONB(L1+5)+1GOTO515,520,525,210,530,535,540,545,210,210,210 515 I=L1:L1=L2:L2=I:GOSUB1010:I=L1:GOSUB1010:GOTO210 520 B(L1)=1:B(L1+5)=0:I=L1:GOSUB1010:L1=L1+5:I=L1:GOTO2010 525 B(L1)=2:B(L1+5)=3:B(L1+10)=0:I=L1:GOSUB1010:I=L1+5:GOSUB1010:L1=L1+10 526 I=L1:GOTO2010 530 IFL2<>L1+1THEN210 531 B(L1)=B(L1+5):B(L2)=B(L2+5):B(L1+5)=0:B(L2+5)=0:I=L1:GOSUB1010:I=L2 532 GOSUB1010:L1=L1+5:L2=L2+5:I=L2:GOSUB1010:I=L1:GOTO2010 535 IFL2<>L1-1THEN210 536 GOTO531 540 IFL2<>L1+1THEN210 541 B(L1)=B(L1+5):B(L1+5)=B(L1+10):B(L1+10)=0:B(L2)=B(L2+5):B(L2+5)=B(L2+10) 542 B(L2+10)=0:I=L2:GOSUB1010:I=L2+5:GOSUB1010:L2=L2+10:I=L2:GOSUB1010 543 I=L1:GOSUB1010:I=L1+5:GOSUB1010:L1=L1+10:I=L1:GOTO2010 545 IFL2<>L1-1THEN210 546 GOTO541 600 REM MOVE RIGHT 610 ONB(L1+1)+1GOTO615,620,625,630,635,210,640,210,645,210,210 615 I=L1:L1=L2:L2=I:GOSUB1010:I=L1:GOSUB1010:GOTO210 620 B(L1)=1:B(L1+1)=0:I=L1:GOSUB1010:L1=L1+1:I=L1:GOTO2010 625 IFL2<>L1+5THEN210 626 B(L1)=B(L1+1):B(L2)=B(L2+1):B(L1+1)=0:B(L2+1)=0:L1=L1+1:L2=L2+1:I=L2 627 GOSUB1010:I=L2-1:GOSUB1010:I=L1-1:GOSUB1010:I=L1:GOTO2010 630 IFL2<>L1-5THEN210 631 GOTO626 635 B(L1)=4:B(L1+1)=5:B(L1+2)=0:L1=L1+2:I=L1-2:GOSUB1010:I=L1-1:GOSUB1010 636 I=L1:GOTO2010 640 IFL2<>L1+5THEN210 641 B(L1)=B(L1+1):B(L1+1)=B(L1+2):B(L1+2)=0:B(L2)=B(L2+1):B(L2+1)=B(L2+2) 642 B(L2+2)=0:L2=L2+2:L1=L1+2:I=L2:GOSUB1010:I=L2-1:GOSUB1010:I=L2-2:GOSUB1010 643 I=L1-2:GOSUB1010:I=L1-1:GOSUB1010:I=L1:GOTO2010 645 IFL2<>L1-5THEN210 646 GOTO641 700 REM MOVE LEFT 710 ONB(L1-1)+1GOTO715,720,725,730,210,735,210,740,210,745,210 715 I=L1:L1=L2:L2=I:GOSUB1010:I=L1:GOSUB1010:GOTO210 720 B(L1)=1:B(L1-1)=0:I=L1:GOSUB1010:L1=L1-1:I=L1:GOTO2010 725 IFL2<>L1+5THEN210 726 B(L1)=B(L1-1):B(L2)=B(L2-1):B(L1-1)=0:B(L2-1)=0:L1=L1-1:L2=L2-1:I=L2 727 GOSUB1010:I=L2+1:GOSUB1010:I=L1+1:GOSUB1010:I=L1:GOTO2010 730 IFL2<>L1-5THEN210 731 GOTO726 735 B(L1)=5:B(L1-1)=4:B(L1-2)=0:L1=L1-2:I=L1+2:GOSUB1010:I=L1+1:GOSUB1010 736 I=L1:GOTO2010 740 IFL2<>L1+5THEN210 741 B(L1)=B(L1-1):B(L1-1)=B(L1-2):B(L1-2)=0:B(L2)=B(L2-1):B(L2-1)=B(L2-2) 742 B(L2-2)=0:L2=L2-2:L1=L1-2:I=L2:GOSUB1010:I=L2+1:GOSUB1010:I=L2+2:GOSUB1010 743 I=L1+2:GOSUB1010:I=L1+1:GOSUB1010:I=L1:GOTO2010 745 IFL2<>L1-5THEN210 746 GOTO741 800 REM SWITCH HOLES 810 I=L1:L1=L2:L2=I:GOSUB1010:I=L1:GOSUB1010:GOTO210 900 REM SEE SOLUTION 910 GOSUB950:FORI=0TO34:READB(I),S(I):NEXT:READL1,L2:FORI=0TO29:GOSUB1000:NEXT 920 Q=1:GOTO210 950 REM FIND PROBLEM 960 RESTORE:IFPN=0THENRETURN 970 FORI=1TOPN 975 READJ:IFJ>=0THEN975 980 NEXT:RETURN 1000 REM DRAW SQUARE I 1010 Y=INT(I/5):X=I-5*Y:X=X*3+20*R:Y=Y*3+6 1020 PRINTLEFT$("",Y);TAB(X);:B=B(I):IFRTHENB=S(I) 1030 ONB+1GOTO1040,1050,1060,1070,1080,1090,1110,1120,1130,1140,1150 1040 IFI=L1THEN1160 1045 PRINT"...[157][157][157]...[157][157][157]...";:RETURN 1050 PRINT"[158]![197]#[157][157][157]$%&[157][157][157]'()";:RETURN 1060 PRINT"![197]#[157][157][157]$%&[157][157][157]$%&";:RETURN 1070 PRINT"$%&[157][157][157]$%&[157][157][157]'()";:RETURN 1080 PRINT"![197][197][157][157][157]$%%[157][157][157]'((";:RETURN 1090 PRINT"[197][197]#[157][157][157]%%&[157][157][157](()";:RETURN 1110 PRINT"![197][197][157][157][157]$%%[157][157][157]$%%";:RETURN 1120 PRINT"[197][197]#[157][157][157]%%&[157][157][157]%%&";:RETURN 1130 PRINT"$%%[157][157][157]$%%[157][157][157]'((";:RETURN 1140 PRINT"%%&[157][157][157]%%&[157][157][157](()";:RETURN 1150 RETURN 1160 ONB(L1-5)+1GOTO1180,1180,1200,1180,1170,1190,1200,1200,1170,1190,1200 1170 IFL2<>L1+1THEN1200 1180 PRINT".*.[157][157][157]";:GOTO1210 1190 IFL2=L1-1THEN1180 1200 PRINT"...[157][157][157]"; 1210 ONB(L1-1)+1GOTO1230,1230,1240,1220,1250,1230,1250,1240,1250,1220,1250 1220 IFL2<>L1-5THEN1250 1230 PRINT"+.";:GOTO1260 1240 IFL2=L1+5THEN1230 1250 PRINT".."; 1260 ONB(L1+1)+1GOTO1280,1280,1290,1270,1280,1300,1290,1300,1270,1300,1300 1270 IFL2<>L1-5THEN1300 1280 PRINT",[157][157][157]";:GOTO1310 1290 IFL2=L1+5THEN1280 1300 PRINT".[157][157][157]"; 1310 ONB(L1+5)+1GOTO1330,1330,1330,1350,1340,1320,1340,1320,1350,1350,1350 1320 IFL2<>L1-1THEN1350 1330 PRINT".-.";:RETURN 1340 IFL2=L1+1THEN1330 1350 PRINT"...";:RETURN 2000 REM CHECK BOARD 2010 GOSUB1010:J=0:FORI=0TO29:J=J+(B(I)<>S(I)):NEXT:M=M+1:IFJTHEN205 2015 FORI=1TO5:GOSUB6300:NEXT 2020 PRINT"[154][147][159][\\\\\\\\\\\\\\\\\\\\]" 2030 IFQTHENPRINT"^THAT.WAS.NOT.SO.HARD[159]_ [159]":GOTO2050 2040 PRINT"^.....YOU.DID.IT.....[159]_ [159]" 2050 PRINT"[159]/::::::::::::::::::::; [159]" 2055 PRINT" [159]" 2060 GOSUB6400:GOTO80 3000 REM RESTORE FONT, POINTERS 3010 POKE56578,PEEK(56578)OR3:POKE56576,PEEK(56576)OR3:POKE53272,20 3020 POKE648,4:POKE53280,14:POKE53281,6:PRINT"[154][147]";:RETURN 4000 REM PROBLEM 1 4010 DATA10,10,10,10,10,10,10,10,10,10 4020 DATA10,10, 1, 1, 4, 1, 5, 0, 1, 1 4030 DATA10,10, 1, 2, 6, 6, 7, 7, 2, 0 4040 DATA10,10, 0, 3, 8, 8, 9, 9, 3, 1 4050 DATA10,10, 1, 1, 0, 4, 1, 5, 1, 1 4060 DATA10,10,10,10,10,10,10,10,10,10 4070 DATA10,10,10,10,10,10,10,10,10,10 4080 DATA16,22 4090 DATA33241351,41513225,32452324 4100 DATA45111541,22544452,11533225 4110 DATA22544451,15133533,25241351 4120 DATA41133254,4,-1 4500 REM PROBLEM 2 4510 DATA10,10,10,10,10,10,10,10,10,10 4520 DATA10,10, 6, 1, 7, 0, 2, 1, 1, 1 4530 DATA10,10, 8, 0, 9, 1, 3, 4, 1, 5 4540 DATA10,10, 4, 1, 5, 2, 1, 6, 0, 7 4550 DATA10,10, 1, 1, 1, 3, 0, 8, 1, 9 4560 DATA10,10,10,10,10,10,10,10,10,10 4570 DATA10,10,10,10,10,10,10,10,10,10 4580 DATA19,23 4590 DATA14511515,225423,13235332 4600 DATA25244544,11513535,54445245 4610 DATA35222532,45113353,35222544 4620 DATA54115113,25241544,35332452 4630 DATA54441515,35331442,22452223 4640 DATA45115113,-1 5000 REM PROBLEM 3 5010 DATA10,10,10,10,10,10,10,10,10,10 5020 DATA10,10, 4, 1, 5, 2, 4, 0, 5, 1 5030 DATA10,10, 1, 2, 4, 3, 5, 1, 2, 0 5040 DATA10,10, 0, 3, 1, 4, 2, 5, 3, 1 5050 DATA10,10, 1, 4, 0, 5, 3, 4, 1, 5 5060 DATA10,10,10,10,10,10,10,10,10,10 5070 DATA10,10,10,10,10,10,10,10,10,10 5080 DATA16,22 5090 DATA35135241,24524111,54423523 5100 DATA35151144,22522235,33145145 5110 DATA52241335,13513224,44524411 5120 DATA54235232,13353314,25424451 5130 DATA42313532,14545231,13241351 5140 DATA25132353,45445,-1 5500 REM PROBLEM 4 5510 DATA10,10,10,10,10,10,10,10,10,10 5520 DATA10,10, 2, 1, 6, 1, 7, 1, 2, 1 5530 DATA10,10, 3, 1, 8, 0, 9, 0, 3, 1 5540 DATA10,10, 4, 4, 5, 5, 4, 4, 5, 5 5550 DATA10,10, 1, 2, 0, 6, 0, 7, 1, 2 5560 DATA10,10, 1, 3, 1, 8, 1, 9, 1, 3 5570 DATA10,10,10,10,10,10,10,10,10,10 5580 DATA22,23 5590 DATA52241353,33533224,44524411 5600 DATA25231514,33142245,33254413 5610 DATA22413225,45113132,14252245 5620 DATA41151133,13252254,14422533 5630 DATA35331445,24454413,53245225 5640 DATA11132533,22454515,33254235 5650 DATA15113225,44524451,42335332 5660 DATA33111451,42233115,51324454 5670 DATA24411132,22522445,41335335 5680 DATA33144514,44522335,22311541 5690 DATA53142335,52245411,13352522 5700 DATA14525415,42525233,33514514 5710 DATA45222315,41151132,25332545 5720 DATA42241132,35322445,4541,-1 6000 REM TITLE SCREEN 6010 A1$="...[157][157][157]BY.[157][157][157]PUB[157][157][157][145][145]":A2$="...[157][157][157]DAV[157][157][157]LIS[157][157][157][145][145]" 6020 A3$="..S[157][157][157]E.J[157][157][157]HED[157][157][157][145][145]":A4$="HOV[157][157][157]OHA[157][157][157].ON[157][157][157][145][145]" 6030 A5$="E.I[157][157][157]NNS[157][157][157].LO[157][157][157][145][145]":A6$="T..[157][157][157]EN.[157][157][157]ADS[157][157][157][145][145]" 6040 A7$="...[157][157][157]@.1[157][157][157]TAR[157][157][157][145][145]":A8$="...[157][157][157]989[157][157][157].77[157][157][157][145][145]":REM LOADSTAR # 6050 B1$="...[157][157][157]...[157][157][157]ALL[157][157][157][145][145]":B2$="SUB[157][157][157]1.8[157][157][157].RI[157][157][157][145][145]" 6060 B3$="SCR[157][157][157]00.[157][157][157]GHT[157][157][157][145][145]":B4$="IPT[157][157][157]831[157][157][157]S.R[157][157][157][145][145]" 6070 B5$="ION[157][157][157].26[157][157][157]ESE[157][157][157][145][145]":B6$="S..[157][157][157]94.[157][157][157]RVE[157][157][157][145][145]" 6080 B7$="...[157][157][157]...[157][157][157]D..[157][157][157][145][145]":B8$="<=>[157][157][157]?[192][193][157][157][157][194][195][196][157][157][157][145][145]" 6090 U$="[145][145][145]":D$="":L$="[157][157][157]":R$="":X$="...[157][157][157]...[157][157][157]...[157][157][157][145][145]" 6100 PRINT"[154][147][159][\\\\\\\\\\\\\\\\\\\\\\\\\\]" 6110 FORI=1TO6:PRINT"^.........................._ [159]":NEXT 6120 PRINT"/::::::::::::::::::::::::::; [159]" 6125 PRINT" [159]":PRINT""; 6130 PRINTB1$;R$;X$;R$;A2$;R$;B5$;R$;B4$;R$;A5$;R$;B6$;R$;A7$;D$; 6140 PRINTA8$;L$;A6$;L$;B7$;L$;A4$;L$;B3$;L$;A3$;L$;A1$;L$;B2$; 6145 FORI=1TO5:GOSUB6300:NEXT 6150 GOSUB6300:PRINTR$;X$;U$;A1$;:GOSUB6300:PRINTD$;L$;X$;R$;B2$; 6160 GOSUB6300:PRINTL$;U$;X$;D$;B1$;:GOSUB6300:PRINTU$;R$;X$;L$;A1$; 6170 GOSUB6300:PRINTR$;R$;X$;L$;A2$;:GOSUB6300:PRINTR$;D$;X$;U$;A3$; 6180 GOSUB6300:PRINTD$;R$;X$;L$;B3$;:GOSUB6300:PRINTR$;R$;X$;L$;A4$; 6190 GOSUB6300:PRINTR$;U$;X$;D$;B4$;:GOSUB6300:PRINTU$;L$;X$;R$;B5$; 6200 GOSUB6300:PRINTL$;D$;X$;U$;A4$;:GOSUB6300:PRINTD$;R$;X$;L$;B4$; 6210 GOSUB6300:PRINTR$;U$;X$;D$;B5$;:GOSUB6300:PRINTU$;R$;X$;L$;A5$; 6220 GOSUB6300:PRINTR$;R$;X$;L$;B6$;:GOSUB6300:PRINTR$;D$;X$;U$;A6$; 6230 GOSUB6300:PRINTD$;L$;X$;R$;B7$;:GOSUB6300:PRINTL$;U$;X$;D$;B6$; 6240 GOSUB6300:PRINTU$;R$;X$;L$;A6$;:GOSUB6300:PRINTR$;R$;X$;L$;A7$; 6250 GOSUB6300:PRINTR$;D$;X$;U$;A8$;:GOSUB6300:PRINTD$;B8$; 6260 FORI=1TO5:GOSUB6300:NEXT:GOTO6400 6300 FORJ=1TO400:NEXT:RETURN 6400 REM CHOOSE PROBLEM 6410 PRINT""; 6420 PRINT"[159][\\\\\\\\\\\\\\\\\\]" 6430 PRINT"[159]^.1,.PROBLEM.1[159]....._ [159]" 6440 PRINT"[159]^.2,.PROBLEM.2[159]....._ [159]" 6450 PRINT"[159]^.3,.PROBLEM.3[159]....._ [159]" 6460 PRINT"[159]^.4,.PROBLEM.4[159]....._ [159]" 6470 PRINT"[159]^.5,.INSTRUCTIONS[159].._ [159]" 6480 PRINT"[159]^.6,.LOADSTAR...[159]..._ [159]" 6490 PRINT"[159]^.................._ [159]" 6500 PRINT"[159]^.[158]ENTER.SELECTION[159].._ [159]" 6510 PRINT"[159]/::::::::::::::::::; [159]" 6515 PRINT" [159]" 6520 GETA$:IFA$=""THEN6520 6530 A=ASC(A$)-49:IFA<0ORA>5THEN6520 6540 IFA<4THENPN=A:PRINT"[154][147]";:Q=0:M=0:RETURN 6550 IFA=4THEN6605 6555 GOSUB3000 6560 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER%:CLOSE15 6570 IFER%<>63THENEND 6580 LOAD"HELLO CONNECT",8 6600 REM INTRO TEXT 6605 PRINT"[154][147][159]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"; 6606 PRINT"........................................"; 6610 PRINT"[150].MOVE.THE.BLOCKS.IN.THE.PROBLEM.GRID.TO."; 6620 PRINT"...MATCH.THE.SOLUTION.GRID.............."; 6630 PRINT".MOVE.THE.OPEN.SQUARE.USING.THE.CURSOR.."; 6640 PRINT"...KEYS.OR.THE.JOYSTICK................."; 6650 PRINT".THE.ARROWS.IN.THE.OPEN.SQUARE.SHOW.THE."; 6660 PRINT"...POSSIBLE.MOVES......................."; 6670 PRINT".F7.OR.THE.FIRE.BUTTON.SWAPS.THE.TWO...."; 6680 PRINT"...OPEN.SQUARES........................."; 6690 PRINT".F1.SHOWS.ONE.POSSIBLE.ANSWER..........."; 6700 PRINT".WHILE.THE.ANSWER.IS.BEING.SHOWN..F5...."; 6710 PRINT"...WILL.PAUSE.THE.DISPLAY.AND.F1.WILL..."; 6715 PRINT"...RESUME..............................."; 6720 PRINT".F3.WILL.QUIT..........................."; 6730 PRINT"........................................"; 6740 PRINT".......[158]PRESS.ANY.KEY.TO.CONTINUE........"; 6745 PRINT"........................................"; 6750 PRINT"[159]::::::::::::::::::::::::::::::::::::::::"; 6760 GETA$:IFA$=""THEN6760 6770 PRINT"[154][147]";:GOTO6410 10000 OPEN15,8,15,"S0:SHOVE IT":CLOSE15:SAVE"SHOVE IT",8:END